<?php
require_once("conexion.php");
require_once("template.php");
require_once("validacion.php");

function presupuesto_insertar($id_presupuesto,$cliente,$fecha,$detalle,$monto,$entrega){

	// Validaciones
	if (! contains_valid_date($fecha))
	   $error="La fecha ingresada es incorrecta. El formato debe ser aaaa/mm/dd. Por ejemplo 2009-10-22.";
	elseif (! is_numerico($monto))
	   $error="El monto ingresado es incorrecto";
	elseif (! is_numerico($entrega))
	   $error="La entrega ingresada es incorrecta";
	else
	   $error="";
	// Fin validaciones

	$objResponse = new xajaxResponse();
	if ($error == ""){
	      global $conexion;
	      $monto=(float)$monto;
	      $entrega=(float)$entrega;
	      $conexion->Execute("INSERT INTO presupuesto (id_cliente,fecha_presu,detalle,monto_final) 
				  VALUES ('$cliente','$fecha','$detalle','$monto')");
	      $entrega=(float)$entrega;
	      if ($entrega > 0){
	      $conexion->Execute("INSERT INTO pagos (id_presupuesto,fecha_pago,monto) 
				VALUES ('$id_presupuesto','$fecha','$entrega')");
	      }
	      $objResponse->script("xajax_presupuesto_listado(); alert('Presupuesto cargado correctamente!')");
	}else
	    $objResponse->script("alert('$error')");
	return $objResponse;
}

function presupuesto_nuevo($id_presupuesto=False){
	global $conexion;
	
	if ($id_presupuesto){
	  presupuesto_modificar($id_presupuesto);
	}
	$resultado=$conexion->GetRow("select max(id_presupuesto) as ultimo from presupuesto");
	if ($resultado){
	  $nro_presupuesto=$resultado['ultimo'];
	  $nro_presupuesto++;
	}else	
	  $nro_presupuesto=0;
	
	set_var("presupuesto_input_nro",$nro_presupuesto);
	$resultado=$conexion->Execute("select id_cliente,nombre from cliente");
	set_file("presupuesto_nuevo","presupuesto_nuevo.html");
	foreach ($resultado as $cliente){
	    set_var("presupuesto_input_cliente_id",$cliente['id_cliente']);
	    set_var("presupuesto_input_cliente",$cliente['nombre']);
	    parse("bucle_presupuesto_listado_clientes");
	}
	$today = date("Y/m/d");
	set_var("presupuesto_input_fecha",$today);
	set_var("presupuesto_input_detalle","");
	set_var("presupuesto_input_monto","");
	set_var("presupuesto_input_entrega","");
	set_var("presupuesto_nuevo_accion","Agregar");
	$accion="xajax_presupuesto_insertar(
		document.getElementById('nro').value,
		document.getElementById('cliente').value,
		document.getElementById('fecha').value,
		document.getElementById('detalle').value,
		document.getElementById('monto').value,
		document.getElementById('entrega').value)";
	set_var("presupuesto_nuevo_onclick",$accion);
	
	$respuesta = gparse("presupuesto_nuevo");
	$objResponse = new xajaxResponse();
	$objResponse->assign("contenedor", "innerHTML", $respuesta);
	return $objResponse;
}

function presupuesto_modificar($id_presupuesto){
	global 	$conexion;
	$id_presupuesto = (int) $id_presupuesto;
	set_file("presupuesto_nuevo","presupuesto_nuevo.html");
	$presupuesto=$conexion->GetRow("select * from presupuesto where id_presupuesto = $id_presupuesto");
	$clientes=$conexion->Execute("select id_cliente,nombre from cliente order by 1");
	foreach ($clientes as $fila){
	  set_var("presupuesto_input_cliente_id",$fila['id_cliente']);
	  set_var("presupuesto_input_cliente",$fila['nombre']);
	  parse("bucle_presupuesto_listado_clientes");
	}
	set_var("presupuesto_input_nro",$id_presupuesto);
	set_var("presupuesto_cliente_seleccionado",$presupuesto['id_cliente']);
	set_var("presupuesto_input_fecha",$presupuesto['fecha_presu']);
	set_var("presupuesto_input_detalle",$presupuesto['detalle']);
	set_var("presupuesto_input_monto",$presupuesto['monto_final']);
	set_var("presupuesto_input_entrega","");
	set_var("presupuesto_nuevo_accion","Modificar");
	$accion="xajax_presupuesto_update(".$id_presupuesto.",
		document.getElementById('cliente').value,
		document.getElementById('fecha').value,
		document.getElementById('detalle').value,
		document.getElementById('monto').value,
		document.getElementById('entrega').value
		)";
	set_var("presupuesto_nuevo_onclick",$accion);	
	$respuesta = gparse("presupuesto_nuevo");
	$objResponse = new xajaxResponse();
	$objResponse->assign("contenedor", "innerHTML", $respuesta);
	return $objResponse;
	
}

function presupuesto_eliminar($id){
   global $conexion;
   $id = (int) $id;
   $conexion->Execute("delete from presupuesto where id_presupuesto = $id");
   $objResponse = new xajaxResponse();
   $objResponse->script("xajax_presupuesto_listado(); alert('Presupuesto borrado correctamente!')");
    return $objResponse;
}

function presupuesto_update($id_presupuesto,$id_cliente,$fecha_presu,$detalle,$monto_final){

	// Validaciones
	if (! contains_valid_date($fecha))
	   $error="La fecha ingresada es incorrecta. El formato debe ser aaaa-mm-dd. Por ejemplo 2009-10-22";
	elseif (! is_numerico($monto))
	   $error="El monto ingresado es incorrecto";
	elseif (! is_numerico($entrega))
	   $error="La entrega ingresada es incorrecta";
	else
	   $error="";
	// Fin validaciones

	$objResponse = new xajaxResponse();
	if ($error == ""){
	    global $conexion;
	    $id_presupuesto = (int) $id_presupuesto;
	    $conexion->Execute("update presupuesto set 
		  id_cliente='$id_cliente',
		  fecha_presu='$fecha_presu',
		  detalle='$detalle',
		  monto_final='$monto_final'
		  where id_presupuesto = $id_presupuesto");
	    $objResponse = new xajaxResponse();
	    $objResponse->script("xajax_presupuesto_listado(); alert('Se han actualizado correctamente los datos!')");
	}else
	      $objResponse->script("alert('$error')");
    return $objResponse;
}

function presupuesto_listado($filtro=0,$fecha_desde=0,$fecha_hasta=0)
{
	global $conexion;
	set_file("presupuesto_listado","presupuesto_listado.html");
	$today = date("Y/m/d");
	$tabla_de_filtrado="Filtrar por: <select id='filtro'>
			<option value=1>Todos</option>
			<option value=2>Con Deuda</option>
			<option value=3>Finalizados</option>
		    </select>
		    Fecha Desde: <input name='fecha_desde' type='text' id='fecha_desde' size='8' value='$today'>
		    Fecha Hasta: <input name='fecha_hasta' type='text' id='fecha_hasta' size='8' value='$today'>
		    <input name='filtrar' type='submit' value='filtrar' onclick='xajax_presupuesto_listado(
				document.getElementById(\"filtro\").value,
				document.getElementById(\"fecha_desde\").value,
				document.getElementById(\"fecha_hasta\").value)'>
		  ";
	if ($filtro==2){
		if ($fecha_desde <> 0 and $fecha_hasta <> 0)
			$res= $conexion->Execute("SELECT a.id_presupuesto,c.nombre,a.fecha_presu,a.detalle,a.monto_final 
						  FROM presupuesto a,pagos b, cliente c 
						  WHERE a.id_presupuesto=b.id_presupuesto and 
						  a.id_cliente=c.id_cliente 
						  and a.fecha_presu between '$fecha_desde' and '$fecha_hasta' 
						  group by 1 
						  having sum(b.monto)< a.monto_final");		
		else
			$res= $conexion->Execute("SELECT a.id_presupuesto,c.nombre,a.fecha_presu,a.detalle,a.monto_final FROM presupuesto a,pagos b, cliente c WHERE a.id_presupuesto=b.id_presupuesto and a.id_cliente=c.id_cliente group by 1 having sum(b.monto)< a.monto_final");		
	}elseif ($filtro==3){
		if ($fecha_desde <> 0 and $fecha_hasta <> 0)
			$res= $conexion->Execute("SELECT a.id_presupuesto,c.nombre,a.fecha_presu,a.detalle,a.monto_final FROM presupuesto a,pagos b, cliente c WHERE a.id_presupuesto=b.id_presupuesto and a.id_cliente=c.id_cliente and a.fecha_presu between '$fecha_desde' and '$fecha_hasta' group by 1 having sum(b.monto)>= a.monto_final");		
		else
			$res= $conexion->Execute("SELECT a.id_presupuesto,c.nombre,a.fecha_presu,a.detalle,a.monto_final FROM presupuesto a,pagos b, cliente c WHERE a.id_presupuesto=b.id_presupuesto and a.id_cliente=c.id_cliente  group by 1 having sum(b.monto)>= a.monto_final");		
	}else{
		if ($fecha_desde <> 0 and $fecha_hasta <> 0)
			$res= $conexion->Execute("select a.id_presupuesto,b.nombre,a.fecha_presu,a.detalle,a.monto_final from presupuesto a,cliente b where a.id_cliente=b.id_cliente and a.fecha_presu between '$fecha_desde' and '$fecha_hasta' ");		
		else
			  $res= $conexion->Execute("select a.id_presupuesto,b.nombre,a.fecha_presu,a.detalle,a.monto_final from presupuesto a,cliente b where a.id_cliente=b.id_cliente");
	}	
	
	if ($res->RowCount() > 0){
	    foreach ($res as $fila){
		    set_var("presupuesto_id",$fila['id_presupuesto']);	
		    set_var("presupuesto_cliente",$fila['nombre']);	
		    set_var("presupuesto_fecha",$fila['fecha_presu']);	
		    set_var("presupuesto_detalle",$fila['detalle']);	
		    set_var("presupuesto_monto",$fila['monto_final']);
		    $id_presu=$fila['id_presupuesto'];
		    $pagos=$conexion->GetRow("select SUM(monto) as total from pagos where id_presupuesto=$id_presu");
		    if ($pagos){
			    $total=(int)$fila['monto_final'];
			    $total_pagos=(int)$pagos['total'];
			    $saldo=$total-$total_pagos;
		    }else{
			    $saldo=	$fila['monto_final'];
			    $total_pagos=0;
		    }
		    set_var("presupuesto_monto_entregado",$total_pagos);
		    set_var("presupuesto_saldo",$saldo);
		    parse("bucle_listado_presupuestos");
	    }
	    $respuesta_tabla=gparse("presupuesto_listado");
	}else
		$respuesta_tabla="<br><hr><table >&nbsp No hay registros &nbsp</table><hr>";
	$objResponse = new xajaxResponse();
	$exportarcionExcelPDF="<table><tr><td>
		<form method='post' action='a_excel_pre.php'>
	  		<input name='submit' type='submit' value=' Exportar Listado a Excel '/>
		</form></td><td>
		<form method='post' action='a_pdf_pre.php'>
			<input type='submit' value=' Exportar Listado a Pdf '/>
		</form></td></tr></table>";
	$salida=$tabla_de_filtrado.$respuesta_tabla.$exportarcionExcelPDF;
	$objResponse->assign("contenedor", "innerHTML", $salida);
	return $objResponse;
}

require("presupuesto.common.php");
$xajax->processRequest();
?>